Digital Sovereignty for everyone

Abilities

Create Knowledge Base Entry

lh-knowledge-base/create-entry

Creates a new knowledge base entry and publishes it immediately. Entries map to OKF concept documents. To create a folder (a grouping entry with no content of its own), omit content_md or pass an empty string — the /index.md URL for that entry will become live automatically once you add children under it via parent_id. Do NOT create a child entry named “index” — folder indexes are generated automatically. Returns has_content and has_children to indicate which markdown URLs are currently live. The content_md field name matches the field name returned by get-entry’s output, so you can round-trip content between the two abilities without renaming. Requires edit_posts. Pass site_id to act on another site you belong to.

Parameter Type Required Default Description
title string Yes Entry title.
content_md string No Entry content as Markdown. Standard Markdown is supported: headings, paragraphs, lists, blockquotes, fenced code blocks, inline code, bold, italic, links, images. Omit or pass empty string to create a container/folder entry with no concept document of its own. This field name matches the content_md field returned by get-entry.
type array of string No lh_knowledge_base_concept_type term slugs. The first term becomes the OKF “type” frontmatter field. Terms are created if they do not exist.
parent_id integer No Parent entry ID. Pass 0 or omit for a top-level entry. Setting a parent places this entry inside the parent’s folder — the parent’s /index.md will include a link to this entry.
task_id integer No Optional. The lh-tasks task this call is working on. Pass with claim_token: the call is refused unless you hold that claim, and a successful call renews it.
claim_token string No Optional. The claim_token from claim-next-task for task_id. Required when task_id is given.
site_id integer No Optional. ID of another site in the network to act on; list-my-sites gives the sites you belong to. Permissions are checked on that site. Omit for this site.

Get Knowledge Base Entry

lh-knowledge-base/get-entry Read-only Idempotent

Retrieves a single knowledge base entry by ID, slug, or hierarchical path. Use path (e.g. “season/round-1”) when navigating via .md URLs and you know the path but not the ID — this is the natural bridge between reading via .md URLs and writing via MCP. Returns title, content as markdown, raw block content, type terms, parent, revision count, and URLs. The returned “content_md” field name matches the input field name accepted by create-entry and update-entry, so content can be round-tripped without renaming. Requires read, plus edit_post on the entry for one that is not active (a draft, pending, private or trashed entry). Pass site_id to act on another site you belong to.

Parameter Type Required Default Description
id integer No Post ID. One of id, slug, or path is required.
slug string No Post slug. One of id, slug, or path is required.
path string No Hierarchical path as it appears in the .md URL, e.g. “season/round-1”. One of id, slug, or path is required. Use this when navigating via .md URLs and you know the path but not the ID.
site_id integer No Optional. ID of another site in the network to act on; list-my-sites gives the sites you belong to. Permissions are checked on that site. Omit for this site.

List Knowledge Base Entries

lh-knowledge-base/list-entries Read-only Idempotent

Returns a paginated list of knowledge base entries. Each item includes has_content and has_children flags indicating which OKF markdown URLs are live. Use parent_id=0 to list only top-level entries (the root of the knowledge hierarchy). Omit parent_id to list all entries regardless of depth. Only active entries are listed. Requires read. Pass site_id to act on another site you belong to.

Parameter Type Required Default Description
type string No Filter by lh_knowledge_base_concept_type term slug.
parent_id integer No Filter by parent post ID. Pass 0 to list only top-level entries. Omit to return all entries regardless of hierarchy depth.
search string No Keyword search against entry title and content.
per_page integer No 20 Results per page. Default 20, max 100.
page integer No 1 Page number (1-based). Default 1.
depth integer No Maximum hierarchy depth to return relative to parent_id (or top-level if parent_id omitted). 1 = direct children only. 2 = children and grandchildren. Omit for no depth limit. Each item includes a depth field (0 = top-level).
modified_after string No Return only entries modified after this date. ISO 8601 format (e.g. 2026-01-01T00:00:00Z).
modified_before string No Return only entries modified before this date. ISO 8601 format (e.g. 2026-06-30T23:59:59Z).
site_id integer No Optional. ID of another site in the network to act on; list-my-sites gives the sites you belong to. Permissions are checked on that site. Omit for this site.

Trash Knowledge Base Entry

lh-knowledge-base/trash-entry Destructive Idempotent

Moves a knowledge base entry to trash. The entry is recoverable via the WordPress admin. Permanent deletion is not available via MCP — this is intentional to protect against accidental data loss. Trashing a parent entry does not automatically trash its children; children will become orphaned (top-level) entries. A locked entry (LH Post Locking) is refused with a clear error. Requires edit_posts, plus delete_post on the entry. Pass site_id to act on another site you belong to.

Parameter Type Required Default Description
id integer Yes Post ID of the entry to trash.
task_id integer No Optional. The lh-tasks task this call is working on. Pass with claim_token: the call is refused unless you hold that claim, and a successful call renews it.
claim_token string No Optional. The claim_token from claim-next-task for task_id. Required when task_id is given.
site_id integer No Optional. ID of another site in the network to act on; list-my-sites gives the sites you belong to. Permissions are checked on that site. Omit for this site.

Update Knowledge Base Entry

lh-knowledge-base/update-entry

Patch-updates an existing knowledge base entry. Only supplied fields are changed — omitted fields are left untouched. Pass an empty array to type to clear all type terms. Setting content_md to an empty string converts a concept entry into a container/folder entry (its /{slug}.md URL will return 404; its /{slug}/index.md will still be live if it has children). The content_md field name matches the field name returned by get-entry’s output. At least one of title, content_md, type, or parent_id must be supplied — an unrecognised parameter is rejected outright rather than silently ignored. A locked entry (LH Post Locking) is refused with a clear error. Requires edit_posts, plus edit_post on the entry. Pass site_id to act on another site you belong to.

Parameter Type Required Default Description
id integer Yes Post ID of the entry to update.
title string No New title. Omit to leave unchanged.
content_md string No New content as Markdown. Omit to leave unchanged. Pass empty string to remove content and convert to a container/folder entry. This field name matches the content_md field returned by get-entry.
type array of string No Replacement type term slugs. Replaces all existing type terms. Pass empty array to clear. Omit to leave unchanged.
parent_id integer No New parent entry ID. Pass 0 to make top-level. Omit to leave unchanged.
task_id integer No Optional. The lh-tasks task this call is working on. Pass with claim_token: the call is refused unless you hold that claim, and a successful call renews it.
claim_token string No Optional. The claim_token from claim-next-task for task_id. Required when task_id is given.
site_id integer No Optional. ID of another site in the network to act on; list-my-sites gives the sites you belong to. Permissions are checked on that site. Omit for this site.

If you like this plugin please consider making a donation to further development

Install LHero.org

lhero.org

Open it straight from your home screen, full screen and quicker to load.

  1. Tap the Share button . If you cannot see it, tap ••• first.
  2. Scroll down and tap Add to Home Screen.
  3. Tap Add.
  1. Tap the browser menu ⋮.
  2. Tap Install app or Add to Home screen.
  1. In the menu bar, choose File, then Add to Dock.

Use your browser's menu to install this site or add it to your home screen.